package com.newtouch.xcd.common.utils;

import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;

import java.math.BigDecimal;

/**
 * 数字处理类
 */
public class NumberUtils extends NumberUtil {

    /**
     * 格式化金额
     * 调用者需要处理异常
     *
     * @param obj 转换金额
     * @return
     */
    public static String money(Object obj) throws NumberFormatException {

        if(obj instanceof String){
            obj = NumberUtils.formatNumber((String)obj);
        }

        return NumberUtil.decimalFormat("#,###", Convert.toDouble(obj));
    }

    /**
     * 格式化金额
     * 调用者需要处理异常
     *
     * @param obj 转换金额
     * @return
     */
    public static String money(Object obj,String formatStr) throws NumberFormatException {

        if(obj instanceof String){
            obj = NumberUtils.formatNumber((String)obj);
        }

        return NumberUtil.decimalFormat(formatStr, Convert.toDouble(obj));
    }

    /**
     * 格式化金额
     * 调用者需要处理异常
     *
     * @param obj 转换金额
     * @return
     */
    public static String formatMoney(Object obj) throws NumberFormatException {
        return NumberUtil.decimalFormat("#,###", Convert.toDouble(obj));
    }

    /**
     * 格式化数字
     * 去除金额中的逗号，然后将金额转换成BigDecimal,方便计算。
     * 如果是空，则返回0
     *
     * @param obj 转换金额
     * @return
     */
    public static BigDecimal formatNumber(String obj) {

        if (StrUtil.isBlank(obj)) {
            return BigDecimal.ZERO;
        }

        String x = obj.replace(",","").replace("，","");
        return Convert.toBigDecimal(x);

    }
}
